Video digitizer components are the most convenient mechanism for presenting new sources of video data to QuickTime. For example, if you are developing special-purpose video hardware that digitizes video images from a previously unsupported source device, you should create a video digitizer component so that applications or sequence grabber components can obtain data from your device.
Refer to the chapter "Component Manager" in Inside Macintosh: More Macintosh Toolbox for a general discussion of how to create a component.
The remaining topics in this section discuss issues you should consider when creating a video digitizer component.
Apple has defined a functional interface for video digitizer components. For information about the functions your digitizer component must support, see "Video Digitizer Component Functions," .
You can use the following enumerators to refer to the request codes for each of the functions that your component must support.
enum {
/* video digitizer interface */
kSelectVDGetMaxSrcRect = 0x1, /* VDGetMaxSrcRect (required) */
kSelectVDGetActiveSrcRect = 0x2, /* VDGetActiveSrcRect
(required) */
kSelectVDSetDigitizerRect = 0x3, /* VDSetDigitizerRect
(required) */
kSelectVDGetDigitizerRect = 0x4, /* VDGetDigitizerRect
(required) */
kSelectVDGetVBlankRect = 0x5, /* VDGetVBlankRect (required) */
kSelectVDGetMaskPixMap = 0x6, /* VDGetMaskPixMap */
kSelectVDGetPlayThruDestination = 0x8, /* VDGetPlayThruDestination
(required) */
kSelectVDUseThisCLUT = 0x9, /* VDUseThisCLUT */
kSelectVDSetInputGammaValue = 0xA, /* VDSetInputGammaValue */
kSelectVDGetInputGammaValue = 0xB, /* VDGetInputGammaValue */
kSelectVDSetBrightness = 0xC, /* VDSetBrightness */
kSelectVDGetBrightness = 0xD, /* VDGetBrightness */
kSelectVDSetContrast = 0xE, /* VDSetContrast */
kSelectVDSetHue = 0xF, /* VDSetHue */
kSelectVDSetSharpness = 0x10, /* VDSetSharpness */
kSelectVDSetSaturation = 0x11, /* VDSetSaturation */
kSelectVDGetContrast = 0x12, /* VDGetContrast */
kSelectVDGetHue = 0x13, /* VDGetHue */
kSelectVDGetSharpness = 0x14,/* VDGetSharpness */
kSelectVDGetSaturation = 0x15, /* VDGetSaturation */
kSelectVDGrabOneFrame = 0x16, /* VDGrabOneFrame
(required) */
kSelectVDGetMaxAuxBuffer = 0x17, /* VDGetMaxAuxBuffer */
kSelectVDGetDigitizerInfo = 0x19, /* VDGetDigitizerInfo
(required) */
kSelectVDGetCurrentFlags = 0x1A, /* VDGetCurrentFlags
(required) */
kSelectVDSetKeyColor = 0x1B, /* VDSetKeyColor */
kSelectVDGetKeyColor = 0x1C, /* VDGetKeyColor */
kSelectVDAddKeyColor = 0x1D, /* VDAddKeyColor */
kSelectVDGetNextKeyColor = 0x1E, /* VDGetNextKeyColor */
kSelectVDSetKeyColorRange = 0x1F, /* VDSetKeyColorRange */
kSelectVDGetKeyColorRange = 0x20, /* VDGetKeyColorRange */
kSelectVDSetDigitizerUserInterrupt = 0x21,
/* VDSetDigitizerUserInterrupt */
kSelectVDSetInputColorSpaceMode = 0x22, /* VDSetInputColorSpaceMode */
kSelectVDGetInputColorSpaceMode = 0x23, /* VDGetInputColorSpaceMode */
kSelectVDSetClipState = 0x24, /* VDSetClipState */
kSelectVDSetClipState = 0x25, /* VDGetClipState */
kSelectVDSetClipRgn = 0x26, /* VDSetClipRgn */
kSelectVDClearClipRgn = 0x27, /* VDClearClipRgn */
kSelectVDGetCLUTInUse = 0x28, /* VDGetCLUTInUse */
kSelectVDSetPLLFilterType = 0x29, /* VDSetPLLFilterType */
kSelectVDGetPLLFilterType = 0x2A, /* VDGetPLLFilterType */
kSelectVDGetMaskandValue = 0x2B, /* VDGetMaskandValue */
kSelectVDSetMasterBlendLevel = 0x2C, /* VDSetMasterBlendLevel */
kSelectVDSetPlayThruDestination = 0x2D, /* VDSetPlayThruDestination */
kSelectVDSetPlayThruOnOff = 0x2E, /* VDSetPlayThruOnOff */
kSelectVDSetFieldPreference = 0x2F, /* VDSetFieldPreference
(required) */
kSelectVDGetFieldPreference = 0x30, /* VDGetFieldPreference
(required) */
kSelectVDPreflightDestination = 0x32, /* VDPreflightDestination
(required) */
kSelectVDPreflightGlobalRect = 0x33, /* VDPreflightGlobalRect */
kSelectVDSetPlayThruGlobalRect = 0x34, /* VDSetPlayThruGlobalRect */
kSelectVDSetInputGammaRecord = 0x35, /* VDSetInputGammaRecord */
kSelectVDGetInputGammaRecord = 0x36, /* VDGetInputGammaRecord */
kSelectVDSetBlackLevelValue = 0x37,/* VDSetBlackLevelValue */
kSelectVDGetBlackLevelValue = 0x38, /* VDGetBlackLevelValue */
kSelectVDSetWhiteLevelValue = 0x39, /* VDSetWhiteLevelValue */
kSelectVDGetWhiteLevelValue = 0x3A, /* VDGetWhiteLevelValue */
kSelectVDGetVideoDefaults = 0x3B, /* VDGetVideoDefaults */
kSelectVDGetNumberOfInputs = 0x3C,/* VDGetNumberOfInputs */
kSelectVDGetInputFormat = 0x3D, /* VDGetInputFormat */
kSelectVDSetInput = 0x3E, /* VDSetInput */
kSelectVDGetInput = 0x3F, /* VDGetInput */
kSelectVDSetInputStandard = 0x40, /* VDSetInputStandard */
kSelectVDSetupBuffers = 0x41, /* VDSetupBuffers */
kSelectVDGrabOneFrameAsync = 0x42, /* VDGrabOneFrameAsync */
kSelectVDDone = 0x43, /* VDDone */
kSelectVDSetCompression = 0x44, /* VDSetCompression */
kSelectVDCompressOneFrameAsync = 0x45, /* VDCompressOneFrameAsync */
kSelectVDCompressDone = 0x46, /* VDCompressDone */
kSelectVDReleaseCompressBuffer = 0x47, /* VDReleaseCompressBuffer */
kSelectVDGetImageDescription = 0x48, /* VDGetImageDescription */
kSelectVDResetCompressSequence = 0x49, /* VDResetCompressSequence */
kSelectVDSetCompressionOnOff = 0x4A, /* VDSetCompressionOnOff */
kSelectVDGetCompressionTypes = 0x4B, /* VDGetCompressionTypes */
kSelectVDSetTimeBase = 0x4C, /* VDSetTimeBase */
kSelectVDSetFrameRate = 0x4D, /* VDSetFrameRate */
kSelectVDGetDataRate = 0x4E, /* VDGetDataRate */
kSelectVDGetSoundInputDriver = 0x4F, /* VDGetSoundInputDriver */
kSelectVDGetDMADepths = 0x50, /* VDGetDMADepths */
kSelectVDGetPreferredTimeScale = 0x51, /* VDGetPreferredTimeScale */
kSelectVDReleaseAsyncBuffers = 0x52,/* VDReleaseAsyncBuffers */
};